package oj;

public class LC152 {
    public int maxProduct(int[] nums) {
        if(nums.length<=0) return 0;
        int max=Integer.MIN_VALUE;
        int imax=1;
        int imin=1;

        for(int i=0;i<nums.length;i++){
            //由于会有负数，负数会让大的变小，小的变大，因此还要维护最小值。
            if(nums[i]<0){
                int tmp=imax;
                imax=imin;
                imin=tmp;
            }
            imax=Math.max(nums[i]*imax,nums[i]);
            imin=Math.min(nums[i]*imin,nums[i]);
            max=Math.max(imax,max);
        }
        return max;
    }
}
